import datetime
from django.utils.deprecation import MiddlewareMixin
from app01 import models
from django.shortcuts import redirect
from django.conf import settings

class AuthMiddleware(MiddlewareMixin):

    def process_request(self, request):
        """ 如果用户已登录，则request中赋值 """
        user_id = request.session.get('user_id', 0)
        user_object = models.UserInfo.objects.filter(id=user_id).first()
        request.user = user_object

        # url白名单，没有登录也可以访问的url
        '''
        1. 获取当前用户访问的url
        2. 检查url是否在白名单中，如果存在，可以访问
            如果不存在， 判断是否已登录
        '''
        if request.path_info in settings.WHITE_REGEX_URL_LIST:
            return

        # 检查用户是否已登录，已登录继续往后走，未登录返回登录页面
        if not request.user:
            return redirect('/login/')

